<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
</head>

<body>
    <pre>
    构造函数通过原型分配的函数是所有对象所共享的。

    ★★★★★
    JavaScript 规定，
    每一个构造函数都有一个 prototype 属性，指向另一个对象 --> 原型对象
    
    注意这个 prototype 就是一个对象，这个对象的所有属性和方法，都会被构造函数所拥有。
    我们可以把那些不变的方法，直接定义在 prototype 对象上，这样所有对象的实例就可以共享这些方法。
  </pre
    >

    <script>
      // 1、初始化构造函数
      function Person() {}

      // 2、声明原型对象
      // 那么这个方法就是共有的方法
      Person.prototype.sayHi = function () {
        console.log("你好啊，么么哒");
        return "想你";
      };

      // 也可以一些共有的属性
      Person.prototype.noSay = "无话可说";

      const p1 = new Person();
      const p2 = new Person();

      console.log(p1.sayHi()); // 你好啊，么么哒   想你
      console.log(p2.noSay); // 无话可说
    </script>
  </body>
</html>